package com.qinggeng.project.system.mapper;

import com.qinggeng.project.api.dto.DistributionPointDto;
import com.qinggeng.project.system.domain.DistributionPoint;
import com.qinggeng.project.system.domain.vo.DistributionPointVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 配送点Mapper接口
 *
 * @author qinggeng
 * @date 2020-06-16
 */
public interface DistributionPointMapper {
    /**
     * 查询配送点
     *
     * @param id 配送点ID
     * @return 配送点
     */
    public DistributionPoint selectDistributionPointById(Long id);

    /**
     * 查询配送点列表
     *
     * @param distributionPoint 配送点
     * @return 配送点集合
     */
    public List<DistributionPoint> selectDistributionPointList(DistributionPoint distributionPoint);

    /**
     * 新增配送点
     *
     * @param distributionPoint 配送点
     * @return 结果
     */
    public int insertDistributionPoint(DistributionPoint distributionPoint);

    /**
     * 修改配送点
     *
     * @param distributionPoint 配送点
     * @return 结果
     */
    public int updateDistributionPoint(DistributionPoint distributionPoint);

    /**
     * 删除配送点
     *
     * @param id 配送点ID
     * @return 结果
     */
    public int deleteDistributionPointById(Long id);

    /**
     * 批量删除配送点
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteDistributionPointByIds(Long[] ids);

    List<DistributionPoint> selectDistributionHandleList(DistributionPoint distributionPoint);

    /**
     * 最近的商户配送点
     * @param shopId
     * @param lng
     * @param lat
     * @return
     */
    DistributionPointDto selectDistributionPointDtoByShopId(@Param("shopId") Long shopId,@Param("lng") Float lng,@Param("lat") Float lat);

    /**
     *
     * @param pointId
     * @param lng
     * @param lat
     * @return
     */
    DistributionPointDto selectDistributionPointDtoById(@Param("pointId")Long pointId,@Param("lng") Float lng,@Param("lat") Float lat);

    /**
     * 配送点列表
     * @param where
     * @return
     */
    List<DistributionPointDto> selectDistributionPointDtoList(DistributionPoint where);

    int countAllPonitCount();

    DistributionPoint selectDistributionPointByCourierId(Long courierId);

    /**
     * 根据订单ID查询配送点信息
     * @param ordersId
     * @return
     */
    DistributionPoint selectDistributionPointByOrdersId(Long ordersId);


    /**
     * 供货点显示门店图片 微信图片
     *
     * @param
     * @return 结果
     */

    List<DistributionPointVO> selectDistributionPointVOList(DistributionPoint distributionPoint);


    DistributionPointDto selectMinDistanceDistributionPointDto(DistributionPoint where);
}
